home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / python2.6 / colorsys.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  3.9 KB  |  151 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''Conversion functions between RGB and other color systems.
  5.  
  6. This modules provides two functions for each color system ABC:
  7.  
  8.   rgb_to_abc(r, g, b) --> a, b, c
  9.   abc_to_rgb(a, b, c) --> r, g, b
  10.  
  11. All inputs and outputs are triples of floats in the range [0.0...1.0]
  12. (with the exception of I and Q, which covers a slightly larger range).
  13. Inputs outside the valid range may cause exceptions or invalid outputs.
  14.  
  15. Supported color systems:
  16. RGB: Red, Green, Blue components
  17. YIQ: Luminance, Chrominance (used by composite video signals)
  18. HLS: Hue, Luminance, Saturation
  19. HSV: Hue, Saturation, Value
  20. '''
  21. __all__ = [
  22.     'rgb_to_yiq',
  23.     'yiq_to_rgb',
  24.     'rgb_to_hls',
  25.     'hls_to_rgb',
  26.     'rgb_to_hsv',
  27.     'hsv_to_rgb']
  28. ONE_THIRD = 1 / 3
  29. ONE_SIXTH = 1 / 6
  30. TWO_THIRD = 2 / 3
  31.  
  32. def rgb_to_yiq(r, g, b):
  33.     y = 0.3 * r + 0.59 * g + 0.11 * b
  34.     i = 0.6 * r - 0.28 * g - 0.32 * b
  35.     q = (0.21 * r - 0.52 * g) + 0.31 * b
  36.     return (y, i, q)
  37.  
  38.  
  39. def yiq_to_rgb(y, i, q):
  40.     r = y + 0.948262 * i + 0.624013 * q
  41.     g = y - 0.276066 * i - 0.63981 * q
  42.     b = (y - 1.10545 * i) + 1.72986 * q
  43.     if r < 0:
  44.         r = 0
  45.     
  46.     if g < 0:
  47.         g = 0
  48.     
  49.     if b < 0:
  50.         b = 0
  51.     
  52.     if r > 1:
  53.         r = 1
  54.     
  55.     if g > 1:
  56.         g = 1
  57.     
  58.     if b > 1:
  59.         b = 1
  60.     
  61.     return (r, g, b)
  62.  
  63.  
  64. def rgb_to_hls(r, g, b):
  65.     maxc = max(r, g, b)
  66.     minc = min(r, g, b)
  67.     l = (minc + maxc) / 2
  68.     if minc == maxc:
  69.         return (0, l, 0)
  70.     if l <= 0.5:
  71.         s = (maxc - minc) / (maxc + minc)
  72.     else:
  73.         s = (maxc - minc) / (2 - maxc - minc)
  74.     rc = (maxc - r) / (maxc - minc)
  75.     gc = (maxc - g) / (maxc - minc)
  76.     bc = (maxc - b) / (maxc - minc)
  77.     if r == maxc:
  78.         h = bc - gc
  79.     elif g == maxc:
  80.         h = 2 + rc - bc
  81.     else:
  82.         h = 4 + gc - rc
  83.     h = h / 6 % 1
  84.     return (h, l, s)
  85.  
  86.  
  87. def hls_to_rgb(h, l, s):
  88.     if s == 0:
  89.         return (l, l, l)
  90.     if l <= 0.5:
  91.         m2 = l * (1 + s)
  92.     else:
  93.         m2 = l + s - l * s
  94.     m1 = 2 * l - m2
  95.     return (_v(m1, m2, h + ONE_THIRD), _v(m1, m2, h), _v(m1, m2, h - ONE_THIRD))
  96.  
  97.  
  98. def _v(m1, m2, hue):
  99.     hue = hue % 1
  100.     if hue < ONE_SIXTH:
  101.         return m1 + (m2 - m1) * hue * 6
  102.     if hue < 0.5:
  103.         return m2
  104.     if hue < TWO_THIRD:
  105.         return m1 + (m2 - m1) * (TWO_THIRD - hue) * 6
  106.     return m1
  107.  
  108.  
  109. def rgb_to_hsv(r, g, b):
  110.     maxc = max(r, g, b)
  111.     minc = min(r, g, b)
  112.     v = maxc
  113.     if minc == maxc:
  114.         return (0, 0, v)
  115.     s = (maxc - minc) / maxc
  116.     rc = (maxc - r) / (maxc - minc)
  117.     gc = (maxc - g) / (maxc - minc)
  118.     bc = (maxc - b) / (maxc - minc)
  119.     if r == maxc:
  120.         h = bc - gc
  121.     elif g == maxc:
  122.         h = 2 + rc - bc
  123.     else:
  124.         h = 4 + gc - rc
  125.     h = h / 6 % 1
  126.     return (h, s, v)
  127.  
  128.  
  129. def hsv_to_rgb(h, s, v):
  130.     if s == 0:
  131.         return (v, v, v)
  132.     i = int(h * 6)
  133.     f = h * 6 - i
  134.     p = v * (1 - s)
  135.     q = v * (1 - s * f)
  136.     t = v * (1 - s * (1 - f))
  137.     i = i % 6
  138.     if i == 0:
  139.         return (v, t, p)
  140.     if i == 1:
  141.         return (q, v, p)
  142.     if i == 2:
  143.         return (p, v, t)
  144.     if i == 3:
  145.         return (p, q, v)
  146.     if i == 4:
  147.         return (t, p, v)
  148.     if i == 5:
  149.         return (v, p, q)
  150.  
  151.